function hslToRgb({h, s, l}) {
    h = h / 360
    s = s / 100
    l = l / 100
    let r, g, b;

    if(s == 0) {
        r = g = b = l; // achromatic
    } else {
        let hue2rgb = function (p, q, t) {
            if(t < 0) t = t + 1;
            if(t > 1) t = t - 1;
            if(t < 1/6) return p + (q - p) * 6 * t;
            if(t < 3/6) return q;
            if(t < 4/6) return p + (q - p) * (2/3 - t) * 6;
            return p;
        }

        const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
        const p = 2 * l - q;
        r = hue2rgb(p, q, h + 1/3);
        g = hue2rgb(p, q, h);
        b = hue2rgb(p, q, h - 1/3);
    }
    // console.log('hslToRgb',r,g,b);
    return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255)};
}

function rgbToHex({r, g, b}) {
    // console.log('rgbToHex',r,g,b);
    return `#${r.toString(16)}${g.toString(16)}${b.toString(16)}`
}

function hslToHex({h,s,l}) {
    return rgbToHex(hslToRgb({h,s,l}))
}

export {hslToHex, hslToRgb, rgbToHex}